package com.yuhuihui.common.utils.excel.read.convert;

import com.yuhuihui.common.utils.ClassUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

/**
 * 单元格类型装换工厂类
 *
 * @author yuhh
 * @date 2022-08-22 16:23:26
 */
public class CellTypeConvertFactory{

	/**
	 * 类型转换map
	 */
	private static final Map<Integer, AbstractCellTypeConvert> CELL_TYPE_MAP = new HashMap<>();

	/**
	 * 类型转换工厂
	 */
	private static final CellTypeConvertFactory FACTORY = new CellTypeConvertFactory();

	/**
	 * 新建工厂
	 * @author yuhh
	 * @date 2018年5月3日
	 */
	private CellTypeConvertFactory() {
		ArrayList<AbstractCellTypeConvert> converts =  ClassUtil.getAllClass(AbstractCellTypeConvert.class);
		for (AbstractCellTypeConvert  convert : converts){
			CELL_TYPE_MAP.put(convert.getTypeCode(), convert);
		}
	}

	public AbstractCellTypeConvert creator(int type){
		return CELL_TYPE_MAP.get(type);
	}

	public void put(int type, AbstractCellTypeConvert abstractCellTypeConvert){
		CELL_TYPE_MAP.put(type, abstractCellTypeConvert);
	}

	public static CellTypeConvertFactory getInstance(){
		return FACTORY;
	}
}
